home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / FileRunner.s < prev    next >
Text File  |  1993-08-20  |  4KB  |  276 lines

  1. ; This example shows how to use the file loader segment, just give it a
  2. ; filename string, drive number, data pointer and mfm buffer and it'll
  3. ; load it to your data point...   If the file DOESNT Exist, your okay, it
  4. ; just returns with nowt.
  5. ;
  6. ; NOTE: this routine cannot handle directories yet!!! (i'll have it sorted)
  7. ; (top one.)  so just keep everything on a disk, besides, directories take
  8. ; up sector space!!   oh, and it only recognises old file sys, i'll have
  9. ; fastfilesys sorted 4 all you 2.0 owners.. (more disk-space and less
  10. ; fucking about..)
  11. ; Oh, and disk drives ONLY please!
  12.  
  13. ; a retro corporation product,   updated 21-5-93 to nuDtrakker by spillage..
  14.  
  15.     Opt    c-
  16.     Section    "Base Code",Code_c
  17.     
  18.     IncDir    Df1:
  19.  
  20. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  21.     Bsr    KillSys
  22.     Move.w    #$83c0,$Dff096
  23.  
  24.     Lea    FileName(pc),a0
  25.     Lea    $e0000,a1    ; Data Pointer
  26.     Lea    $f0000,a2    ; MFM Pointer ($3400 bytes)
  27.     Moveq    #1,d0    ; Drive 1    
  28.     Bsr    FileLoad+$20    ; Load File    
  29.     
  30. XX    Btst    #6,$Bfe001
  31.     Bne    XX
  32.  
  33. Quit    Bsr    ReturnSys
  34.     Movem.l    (sp)+,d0-d7/a0-a6 
  35.     Moveq    #0,d0      
  36.     Rts
  37.  
  38. VBL    Move.l    $Dff004,d0
  39.     And.l    #$1ff00,d0
  40.     Cmp.l    #$13000,d0
  41.     Bne    VBL
  42.     Rts
  43.  
  44. KillSys    Bsr.s    SysWait    
  45.  
  46.     Move.l    $4,a6    
  47.     Lea    GFXName(pc),a1    
  48.     Moveq    #0,d0    
  49.     Jsr    -552(a6)    
  50.         
  51.     Lea    OldCop1(pc),a5
  52.     Move.l    $26(a0),$0(a5)    
  53.     Move.l    $32(a0),$4(a5)    
  54.     
  55.     Lea    HardWare,a6
  56.     Move.w    IntEnaR(a6),d0    
  57.     Move.w    DMAConR(a6),d1  
  58.     Or.w    #$8000,d0    
  59.     And.w    #$03ff,d1    
  60.     Or.w    #$8000,d1    
  61.     Move.w    d0,$8(a5)    
  62.     Move.w    d1,$a(a5)    
  63.     
  64.     Move.w    #$7fff,IntEna(a6) 
  65.     Move.w    #$7fff,DMACon(a6) 
  66.     Rts
  67.  
  68. SysWait    Move.w    #15,d7    
  69. SysWaitLoop    Move.l    #$05000,d1    
  70.     Bsr.s    WaitVBL    
  71.     Bsr.s    DoWaitVBL    
  72.     Dbf    d7,SysWaitLoop    
  73.     Rts
  74.  
  75. DoWaitVBL    Move.l    #$03000,d1    
  76. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  77.     Lea    HardWare,a6    
  78. WaitVBLLoop    Move.l    VPosR(a6),d0    
  79.     And.l    #$1ff00,d0    
  80.     Cmp.l    d1,d0    
  81.     Bne.s    WaitVBLLoop    
  82.     Movem.l    (sp)+,d0-d1/a6    
  83.     Rts        
  84.  
  85. ReturnSys    Lea    HardWare,a6    
  86.     Move.w    OldIntEna(pc),IntEna(a6)
  87.     Move.w    OldDMACon(pc),DMACon(a6)
  88.     Move.l    OldCop1(pc),Cop1lc(a6)
  89.     Move.l    OldCop2(pc),Cop2lc(a6)
  90.     Rts
  91.  
  92. GFXName    Dc.b    "graphics.library",0
  93.     Even
  94. OldCop1    Dc.l    0    
  95. OldCop2    Dc.l    0    
  96. OldIntEna    Dc.w    0    
  97. OldDmaCon    Dc.w    0    
  98. Screen    Dc.l    $c0000    
  99.  
  100. FileName    Dc.b    "grilling_birds.txt",0
  101.     Even
  102.  
  103. Cmv    Macro
  104.     Dc.w    \2,\1
  105.     EndM
  106.     
  107. Cwt    Macro
  108.     Dc.w    (\1*$100)+$01,$fffe
  109.     EndM    
  110.  
  111. Pal    Macro
  112.     Dc.w    $ffe1,$fffe
  113.     EndM    
  114.  
  115. EndCop    Macro
  116.     Dc.w    $ffff,$fffe
  117.     EndM    
  118.  
  119. CopperList    Cwt    $15    
  120.     Cmv    $0200,BplCon0    
  121.     Cmv    $00bb,BplCon1    
  122.     Cmv    $000a,BplCon2    
  123.     Cmv    $0034,DdfStrt    
  124.     Cmv    $00c8,DdfStop    
  125.     Cmv    $1681,DiwStrt    
  126.     Cmv    $36c1,DiwStop
  127.     Cmv    $0,BplMod1    
  128.     Cmv    $0,BplMod2    
  129.     
  130.     Cwt    $25        
  131.     Cmv    $0000,Color00    
  132.     Cmv    $0fff,Color01
  133.     
  134. CopperBPLS    Cmv    $e,BplPt0h    
  135.     Cmv    $0,BplPt0l    
  136.     Cmv    $0,BplPt1h    
  137.     Cmv    $0,BplPt1l    
  138.     Cmv    $0,BplPt2h    
  139.     Cmv    $0,BplPt2l    
  140.     Cmv    $0,BplPt3h    
  141.     Cmv    $0,BplPt3l    
  142.     Cmv    $0,BplPt4h
  143.     Cmv    $0,BplPt4l 
  144.     
  145.     Cwt    $28    
  146.     Cmv    $1200,BplCon0    
  147.  
  148.     EndCop
  149.  
  150. FileLoad    Incbin    CodeSegments/FileLoader-Seg
  151.  
  152. ****Custom Chip Registers****
  153.  
  154. Hardware    = $Dff000
  155.  
  156. ;Control Registers
  157.  
  158. Dmaconr    = $002
  159. Vposr    = $004
  160. Vhposr    = $006
  161. Joy0dat    = $00A
  162. Joy1dat    = $00C
  163. Clxdat    = $00E
  164. Intenar    = $01C
  165. Intereqr    = $01E
  166. Copcon    = $02E
  167.  
  168. ;Blitter Registers
  169.  
  170. Bltcon0    = $040
  171. Bltcon1    = $042
  172. Bltafwm    = $044
  173. Bltalwm    = $046
  174. Bltcpth    = $048
  175. Bltcptl    = $04A
  176. Bltbpth    = $04C
  177. Bltbptl    = $04E
  178. Bltapth    = $050
  179. Bltaptl    = $052
  180. Bltdpth    = $054
  181. Bltdptl    = $056
  182. Bltsize    = $058
  183. Bltcmod    = $060
  184. Bltbmod    = $062
  185. Bltamod    = $064
  186. Bltdmod    = $066
  187. Bltcdat    = $070
  188. Bltbdat    = $072
  189. Bltadat    = $074
  190.  
  191. ;Copper Registers
  192.  
  193. Cop1lc    = $080
  194. Cop1lch    = $080
  195. Cop1lcl    = $082
  196. Cop2lc    = $084
  197. Cop2lch    = $084
  198. Cop2lcl    = $086
  199. Copjmp1    = $088
  200. Copjmp2    = $08A
  201. Diwstrt    = $08E
  202. Diwstop    = $090
  203. Ddfstrt    = $092
  204. Ddfstop    = $094
  205. Dmacon    = $096
  206. Clxcon    = $098
  207. Intena    = $09A
  208. Intreq    = $09C
  209.  
  210. ;BitPlane Registers 
  211.  
  212. BplCon0    = $100
  213. BplCon1    = $102
  214. BplCon2    = $104
  215. BplMod1    = $108
  216. BplMod2    = $10a
  217.  
  218. BplPt0h    = $0e0
  219. BplPt0l    = $0e2
  220. BplPt1h    = $0e4
  221. BplPt1l    = $0e6
  222. BplPt2h    = $0e8
  223. BplPt2l    = $0ea
  224. BplPt3h    = $0ec
  225. BplPt3l    = $0ee
  226. BplPt4h    = $0f0
  227. BplPt4l    = $0f2
  228. BplPt5h    = $0f4
  229. BplPt5l    = $0f6
  230.  
  231. ;Colour Registers
  232.  
  233. Color00    = $180
  234. Color01    = $182
  235. Color02    = $184
  236. Color03    = $186
  237. Color04    = $188
  238. Color05    = $18a
  239. Color06    = $18c
  240. Color07    = $18e
  241. Color08    = $190
  242. Color09    = $192
  243. Color10    = $194
  244. Color11    = $196
  245. Color12    = $198
  246. Color13     = $19a
  247. Color14     = $19c
  248. Color15     = $19e
  249. Color16     = $1a0
  250. Color17     = $1a2
  251. Color18     = $1a4
  252. Color19     = $1a6
  253. Color20     = $1a8
  254. Color21     = $1aa
  255. Color22     = $1ac
  256. Color23     = $1ae
  257. Color24     = $1b0
  258. Color25     = $1b2
  259. Color26     = $1b4
  260. Color27     = $1b6
  261. Color28     = $1b8
  262. Color29     = $1ba
  263. Color30     = $1bc
  264. Color31     = $1be
  265.  
  266. EcsNop    = $1fe
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.